/* 
  学习目标：使用subscribe监听仓库state变化
  作用：类似vue中的侦听器，可以监听state变化
  语法：
    1. const 接触监听函数名称 = store.subscribe( 回调函数 );  💥回调函数在state变化时自动触发
    2. 接触监听函数名称();     <----  💥调用该函数可以解除对state的监听
  
*/
import { createStore } from 'redux';

const store = createStore(function (state = { count: 0 }, { type }) {
  console.warn('仓库 收到信息了， type值为', type);

  switch (type) {
    case 'add':
      return {
        ...state,
        count: state.count + 1,
      };
    case 'des':
      return {
        ...state,
        count: state.count - 1,
      };

    default:
      return state;
  }
});

store.dispatch({ type: 'add' });
store.dispatch({ type: 'des' });

const unWatch = store.subscribe(() => {
  console.log('监听到了数据变化:', store.getState());
});

// 调用函数，取消监听
unWatch();

store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
